﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AutomatedDecisionMaking.GUI.HelpWindows
{
    public partial class FrmUserManual : Form
    {
        public FrmUserManual()
        {
            InitializeComponent();
            rbMaxiMax.Checked = true;
            rbMaxiMax_CheckedChanged(null, null);
        }


        #region Podejmowanie decyzji w warunkach niepewności.
        /// <summary>
        /// Reakcja na wybór opisu metody MaxiMax.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbMaxiMax_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Wybór maksymalnej wartości dla poszczególnych decyzji.\n" +
                             "Krok 2 - Z pośród wybranych wartości wybierana jest wartość maksymalne.\n" +
                             "Krok 3 - Podjęta zostaje decyzja, której odpowiada wybrana wartość.";
            labelMethodDescription.Text = s;
        }

        /// <summary>
        /// Reakcja na wybór opisu metody MaxiMax.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbMiniMax_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Wybór minimalnej wartości dla poszczególnych decyzji.\n" +
                             "Krok 2 - Z pośród wybranych wartości wybierana jest wartość maksymalne.\n" +
                             "Krok 3 - Podjęta zostaje decyzja, której odpowiada wybrana wartość.";
            labelMethodDescription.Text = s;
        }

        /// <summary>
        /// Reakcja na wybór opisu metody Wyboru ostrożengo.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbCarefulChoice_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Określenie wag dla poszczególnych decyzji.\n" +
                             "Krok 2 - Rozwiązanie zagadnienia za wykorzystaniem kryterium MaxiMax oraz MiniMax.\n" +
                             "Krok 3 - Dokonanie ważenia wyników z przyjętą wagą.\n" +
                             "Krok 4 - Wybór maksymalnej wartości powstałej w wyniku ważenia.\n" +
                             "Krok 5 - Podjęta zostaje decyzja, której odpowiada wybrana wartość.";
            labelMethodDescription.Text = s;
        }

        /// <summary>
        /// Reakcja na wybór opisu metody Najmniejszego żalu.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbMinRegret_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Wybór maksymalnej wartości dla poszczególnych decyzji.\n" +
                             "Krok 2 - Stworzenie macierzy żalu poprzez wykonanie działania abs(wartośćKomórkiDecyzjiN - MaxWartośćDecyzjiN).\n" +
                             "Krok 3 - Wybór maksymalnej wartości dla poszczególnych decyzji ale na wartościach macierzy żalu.\n" +
                             "Krok 4 - Wybór najmniejszej wartość spośród wszystkich.\n" +
                             "Krok 5 - Podjęta zostaje decyzja, której odpowiada wybrana wartość z macierzy żalu.";
            labelMethodDescription.Text = s;
        }

        /// <summary>
        /// Reakcja na wybór opisu metody Laplace'a.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbLaplace_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Założenie, że każdy ze scenariuszy jest równie prawdopodobny.\n" +
                             "Krok 2 - Zsumowanie wartości dla poszczególnych decyzji.\n" +
                             "Krok 3 - Wymnożenie sumy dla poszczególnych decyzji przez prawdopodobieństwo przypadające na jeden scenariusz.\n" +
                             "Krok 4 - Wybór maksymalnej wartości z pośród sum wazonych.\n" +
                             "Krok 5 - Podjęta zostaje decyzja, której odpowiada wybrana wartość.";
            labelMethodDescription.Text = s;
        }
        #endregion

        #region Podejmowanie decyzji w warunkach ryzyka
        /// <summary>
        /// Reakcja na wybór opisu metody Maksimum oczekiwanego żalu.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbMaxExpected_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Określenie prawdopodobieństw wystąpienia poszczewgólnych scenariuszy.\n" +
                             "Krok 2 - Obliczenie sumy ważonej dla poszczególnych decyzji.\n" +
                             "Krok 3 - Wybranie wartości maksymalnej z pośród wartości ważonych.\n" +
                             "Krok 4 - Podjęta zostaje decyzja, której odpowiada wybrana wartość.";
            labelMethodDescription.Text = s;
        }

        /// <summary>
        /// Reakcja na wybór opisu metody Minimum oczekiwanego żalu.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbMinExpected_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Określenie prawdopodobieństw wystąpienia poszczewgólnych scenariuszy.\n" +
                             "Krok 2 - Wybór maksymalnej wartości dla poszczególnych decyzji.\n" +
                             "Krok 3 - Stworzenie macierzy żalu poprzez wykonanie działania abs(wartośćKomórkiDecyzjiN - MaxWartośćDecyzjiN).\n" +
                             "Krok 4 - Obliczenie sumy ważonej dla pszczególnych decyzji manierzy żalu.\n" +
                             "Krok 5 - Wybór najmnijeszyej wartości z pośród sum ważonych.\n" +
                             "Krok 6 - Podjęta zostaje decyzja, której odpowiada wybrana wartość.";
            labelMethodDescription.Text = s;
        }
        #endregion

        #region Podejmowanie dezycji w warunkach częściowej informacji
        /// <summary>
        /// Reakcja na wybór opisu metody Bayes'a.
        /// </summary>
        /// <param name="sender">Obiekt wysyłający zdarzenie</param>
        /// <param name="e">Rodzaj zdarzenia</param>
        private void rbBayes_CheckedChanged(object sender, EventArgs e)
        {
            const string s = "Krok 1 - Wprowadzenie prawodopodobieństw występienia poszczególnych scenariuszy.\n" +
                             "Krok 2 - Wprowadzenie dodatkowych warunków oraz prawdopodobieństw wystapienie tych warunków dla\n" +
                             "              poszczególnych scenariuszy.\n" +
                             "Krok 3 - Dokonanie analizy Bayes'owskiej dla poszczegónych warunkóww celu obliczenia prawdopodobieństw\n" +
                             "              scenariuszy w określonych warunkach.\n" +
                             "Krok 4 - Dla każdego z warunków z osobna nalezy obliczyć sumy ważone poszczególnych decyzji.\n" +
                             "Krok 5 - Wybór maksymalnej wartości spośród ważonych.\n" +
                             "Krok 6 - Podjęta zostaje decyzja, której odpowiada wybrana wartość.";
            labelMethodDescription.Text = s;
        }
        #endregion

        private void btOK_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
